package com.yserp.project.erp.order.saleorder.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yserp.project.erp.bill.payment.domain.PaymentItem;
import com.yserp.project.erp.bill.receivemoney.domain.ReceiveMoney;
import com.yserp.project.erp.bill.receivemoney.domain.ReceiveMoneyItem;
import com.yserp.project.erp.order.saleorder.domain.ErpSaleOrder;
import com.yserp.project.erp.order.saleorder.domain.ErpSaleOrderDto;
import com.yserp.project.erp.order.saleorder.domain.ErpSaleOrderVo;

import java.util.List;

/**
 * 销售订单Service接口
 *
 * @author yserp
 * @date 2022-07-07
 */
public interface IErpSaleOrderService extends IService<ErpSaleOrder> {
    /**
     * 查询销售订单
     *
     * @param id 销售订单主键
     * @return 销售订单
     */
    public ErpSaleOrderVo selectErpSaleOrderById(Long id);

    /**
     * 查询销售订单列表
     *
     * @param erpSaleOrder 销售订单
     * @return 销售订单集合
     */
    public List<ErpSaleOrder> selectErpSaleOrderList(ErpSaleOrder erpSaleOrder);

    /**
     * 新增销售订单
     *
     * @param erpSaleOrderDto 销售订单
     * @return 结果
     */
    public int insertErpSaleOrder(ErpSaleOrderDto erpSaleOrderDto);

    /**
     * 修改销售订单
     *
     * @param erpSaleOrder 销售订单
     * @return 结果
     */
    public int updateErpSaleOrder(ErpSaleOrderDto erpSaleOrderDto);

    /**
     * 修改销售订单
     *
     * @param erpSaleOrder 销售订单
     * @return 结果
     */
    public int updateErpSaleOrderStatus(ErpSaleOrder erpSaleOrder);

    /**
     * 批量删除销售订单
     *
     * @param ids 需要删除的销售订单主键集合
     * @return 结果
     */
    public int deleteErpSaleOrderByIds(String ids);

    /**
     * 删除销售订单信息
     *
     * @param id 销售订单主键
     * @return 结果
     */
    public int deleteErpSaleOrderById(Long id);

    /**
     * 批量审核销售订单信息
     *
     * @param ids 需要审核的销售订单主键集合
     * @return 结果
     */
    int auditErpSaleOrderByIds(String ids);


    /**
     * 通过客户Id查询销售单数据
     * @param customerId
     * @return
     */
    public List<ReceiveMoneyItem> selectSaleOrderListByCustomerId(Long customerId);

}
